import axios from 'axios'
// axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
// axios.defaults.headers['Platform'] = 'web'
import { Message, Loading } from 'element-ui'
import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from "@/utils/ruoyi";
import { saveAs } from 'file-saver'

let downloadLoadingInstance;
// 创建axios实例
const service = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    baseURL:  'https://www.acmemach.cn/uat-api/',
    // baseURL:  'https://www.acmemach.cn/prod-api/',
   
    // baseURL:  '/api',
    // 超时
    timeout: 50000 * 1000,
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 让每个请求携带自定义token 请根据实际情况自行修改
        config.headers['Authorization'] = 'Bearer '+localStorage.getItem('jztoken')


        return config;
    },
    error => {
        console.log('err：' + error);
        return Promise.reject(error);
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        // return response;
        // 未设置状态码则默认成功状态
        const code = response.data.code || 200;
        // // 获取错误信息
        // const errorCode = {
        //     '401': '认证失败，无法访问系统资源',
        //     '403': '当前操作没有权限',
        //     '404': '访问资源不存在',
        //     'default': '系统未知错误,请反馈给管理员'
        // };
        // const msg = errorCode[code] || response.data.msg || errorCode['default'];
        if (code === 500) {
            return response
        }else if (code == 401) {
           setTimeout(()=>{
            location.href ='/#/login' ;
           },1500)
            return Promise.reject('无效的会话，或者会话已过期，请重新登录。')
        } else if (code !== 200) {
            return response
        }else{
            return response
        }
    },
    error => {
        console.log('err：' + error);
        let { message } = error;
        if (message == "Network Error") {
            message = "后端接口连接异常";
        }
        else if (message.includes("timeout")) {
            message = "系统接口请求超时";
        }
        else if (message.includes("Request failed with status code")) {
            message = "系统接口" + message.substr(message.length - 3) + "异常";
        }
        return Promise.reject(message);
    }
)

// 通用下载方法
// export function download(url, params, filename, config) {
//     downloadLoadingInstance = Loading.service({ text: "正在下载数据，请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
//     return service.get(url, params, {
//       transformRequest: [(params) => { return tansParams(params) }],
//       headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
//       responseType: 'blob',
//       ...config
//     }).then(async (data) => {
//       const isBlob = blobValidate(data);
//       if (isBlob) {
//         const blob = new Blob([data])
//         saveAs(blob, filename)
//       } else {
//         const resText = await data.text();
//         const rspObj = JSON.parse(resText);
//         const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
//         Message.error(errMsg);
//       }
//       downloadLoadingInstance.close();
//     }).catch((r) => {
//       console.error(r)
//       Message.error('下载文件出现错误，请联系管理员！')
//       downloadLoadingInstance.close();
//     })
//   }





  


export default service;